600 PRINT "SETTORI DI CATALOGO? ": VTAB 22: PRINT "PREMI <ESC> PER RICOMINCIARE ": VTAB 15: HTAB 22
610 GET A$: IF A$ = CHR$(27) THEN HTAB 1: GOTO 420
620 PRINT A$
630 IF A$ = "N" OR A$ = CHR$(110) GOTO 710
640 ON A$ < >"S" AND A$ < > CHR$(121) GOTO 590:DIR = 1
650 VTAB 17: CALL -958
660 PRINT "QUANTI SETTORI DI CATALOGO VUOI AVERE? (7 NOMI FILE/SETTORE)";
670 INPUT DS
680 IF DS <2 OR DS >14 THEN PRINT CHR$(7): GOTO 650
690 REM
700 REM STAMPA LE OPZIONI SCELTE
710 HOME
720 IF DOS +FR +DIR = 0 THEN END
730 PRINT SPC( 13);"AGGIUNGI SETTORI"
740 PRINT
750 PRINT "HAI SCELTO DI LIBERARE"
760 PRINT
770 IF DOS = 1 THEN PRINT "I SETTORI DEL DOS"
780 IF FR = 1 THEN PRINT "GLI 11 SETTORI DI NORMA NON USATI"
790 IF DIR = 0 THEN 820
800 PRINT 15 -DS;" SETTORE";: IF DS <14 THEN PRINT "/I";
810 PRINT " DAL CATALOGO"
820 REM AVVIO
830 POKE 34,10
840 IF DOS = 0 THEN 1190
850 HOME
860 VTAB 12
870 PRINT "IMMETTI IL MESSAGGIO DA VISUALIZZARE"
880 PRINT "AL BOOTING DI QUESTO DISCHETTO."
890 INPUT A$
900 IF A$ = "" AND LEN(B$) >0 THEN A$ = RIGHT$(B$,40):B$ = LEFT$(B$,1): GOTO 950
910 PRINT
920 PRINT "LO VUOI NORMALE, LAMPEGGIANTE,"
930 PRINT "O NEGATIVO? (N/F/I)";
940 GET B$
950 IF B$ = "N" OR B$ = CHR$(110) THEN V2 = 128: GOTO 990
960 IF B$ = "F" OR B$ = CHR$(102) THEN V2 = 0: GOTO 990
970 IF B$ = "I" OR B$ = CHR$(105) THEN V2 = -64: GOTO 990
980 GOTO 940
990 IF LEN(A$) >40 THEN 850
1000 IF LEN(A$) = 40 THEN 1100
1010 FOR V1 = 1 TO 20 - INT( LEN(A$)/2)
1020 A$ = " " +A$
1030 NEXT
1040 FOR V1 = LEN(A$) +1 TO 40
1050 A$ = A$ +" "
1060 NEXT
1070 B$ = B$ +A$
1080 VTAB 8: HTAB 1
1090 PRINT SPC( 10);"MESSAGGIO DI BOOTING"
1100 FOR V1 = 1 TO 40
1110 V3 = ASC( MID$ (A$,V1,1))
1120 IF V3 = 32 THEN V3 = 160: GOTO 1150
1130 IF V2 < >128 AND V3 <64 THEN V3 = V3 +64
1140 V3 = V3 +V2
1150 POKE 24721 +V1,V3
1160 POKE 1063 +V1,V3
1170 NEXT
1180 PRINT
1190 HOME : VTAB 12: IF DIR THEN PRINT CHR$(7); CHR$(7);"ATTENZIONE! NON LIBERARE SETTORI DI CATALOGO SU UN DISCHETTO CONTENENTE FILE": PRINT : PRINT
1200 PRINT "INSERISCI IL DISCHETTO DA MODIFICARE"
1210 PRINT "NEL DRIVE 1, E PREMI <RETURN> PER ": PRINT "CONTINUARE, O <ESC> PER FERMARE"
1220 POKE -16368,0
1230 V1 = PEEK( -16384)
1240 IF V1 = 155 THEN POKE -16368,0: GOTO 300
1250 IF V1 < >141 THEN 1230
1260 POKE -16368,0
1270 REM READ VTOC INTO $5000-$50FF
1280 POKE 16398,0: REM SETTORE
1290 POKE 16397,17: REM TRACCIA
1300 POKE 16405,1: REM LETTURA
1310 POKE 16402,80: REM BUFFER
1320 CALL 16384
1330 GOSUB 1860
1340 GOSUB 1980
1350 IF DOS = 0 THEN 1430
1360 REM OPZIONE 1: APRE LE TRACCE DEL DOS (1-2)
1370 FOR V1 = 1 TO 2
1380 POKE 20536 +V1 *4,255
1390 POKE 20537 +V1 *4,255
1400 NEXT
1410 POKE 20676,127
1420 REM OPZIONE 2: APRE 11 SETTORI SULLA TRACCIA 2
1430 IF FR = 1 THEN POKE 20544,255: POKE 20545,224: POKE 20677,127
1440 IF DIR = 0 THEN 1630
1450 REM OPZIONE 3: APRE NEL CATALOGO IL NUMERO DI SETTORI SCELTO
1460 V1 = 2 ^(16 -DS) -2
1470 V2 = INT(V1/256)
1480 V1 = V1 -V2 *256
1490 POKE 20678,142 -DS
1500 REM RISCRIVE LA VTOC SUL DISCHETTO
1510 POKE 20604,V2
1520 POKE 20605,V1
1530 POKE 16405,2: REM SCRITTURA
1540 CALL 16384
1550 GOSUB 1860
1560 REM FISSA A ZERO I BYTE DI COLLEGAMENTO DEL CATALOGO
1570 POKE 16398,16 -DS: REM SETTORE
1580 POKE 16405,1: REM LETTURA
1590 CALL 16384
1600 GOSUB 1860
1610 POKE 20481,0
1620 POKE 20482,0
1630 REM SALVA LA VTOC O IL CATALOGO SUL DISCO, A SECONDA DEL VALORE DELLA VARIABILE DIR (LINE 1440)
1640 POKE 16405,2: REM SCRITTURA
1650 CALL 16384
1660 GOSUB 1860
1670 IF DOS = 0 THEN 1740
1680 REM SE E' SCELTA L'OPZIONE 1 SALVA IL PROGRAMMA DI BOOTING SULLA TRACCIA 0, SETTORE 0
1690 POKE 16398,0: REM SETTORE
1700 POKE 16397,0: REM TRACCIA
1710 POKE 16402,96: REM BUFFER
1720 CALL 16384
1730 GOSUB 1860
1740 HOME
1750 VTAB 12
1760 PRINT "VUOI MODIFICARE UN ALTRO DISCHETTO? ";
1770 GET A$
1780 PRINT A$
1790 IF A$ = "N" THEN END
1800 PRINT
1810 PRINT "VUOI LASCIARE LE OPZIONI STABILITE"
1820 PRINT "COME SONO ADESSO?";
1830 GET A$
1840 IF A$ = "N" OR A$ = CHR$(118) THEN 300
1850 GOTO 820
1860 REM ROUTINE DI CONTROLLO DEGLI ERRORI DI DISCHETTO
1870 V1 = PEEK(16406)
1880 IF V1 < >16 AND V1 < >64 AND V1 < >128 THEN RETURN
1890 POKE 16406,0
1900 TEXT : HOME
1910 VTAB 11
1920 IF V1 = 16 THEN PRINT "IL DISCHETTO E' PROTETTO IN SCRITTURA,": PRINT "TOGLI LA LINGUETTA DI PROTEZIONE"
1930 IF V1 = 64 THEN PRINT "ERRORE DI DRIVE"
1940 IF V1 = 128 THEN PRINT "ERRORE DI LETTURA"
1950 PRINT CHR$(7); CHR$(7)
1970 POP : VTAB 22: PRINT "PREMI <RETURN> PER CONTINUARE": POKE -16368,0: GET A$: PRINT A$: POKE -16368,0: GOTO 300
1980 IF PEEK(20676) < >127 AND PEEK(20677) < >127 AND ( PEEK(20678) <127 OR PEEK(20678) >141) THEN RETURN
1990 TEXT
2000 HOME
2010 VTAB 9
2020 IF PEEK(20676) = 127 AND DOS = 1 THEN PRINT "IL DOS E' GIA' STATO TOLTO DA QUESTO DISCHETTO": PRINT
2030 IF ( PEEK(20676) = 127 OR PEEK(20677) = 127) AND FR = 1 THEN PRINT "GLI UNDICI SETTORI DELLA TRACCIA 2 SONO": PRINT "GIA' STATI LIBERATI SU QUESTO DISCHETTO.": PRINT
2040 IF PEEK(20677) = 127 AND DOS = 1 THEN PRINT "TOGLIENDO IL DOS DA QUESTO DISCHETTO SI": PRINT "AVREBBE INTERFERENZA CON SETTORI GIA' LIBERATI IN PRECEDENZA.": REM 3 SPAZI
2050 V1 = PEEK(20678) -127
2060 IF V1 >0 AND V1 <15 AND DIR = 1 THEN PRINT V1;" SETTORI SONO GIA' STATI LIBERATI": PRINT "DAL CATALOGO DEL DISCHETTO.": PRINT
2070 POP
2080 VTAB 22: PRINT "PREMI <RETURN> PER CONTINUARE": POKE -16368,0: GET A$: PRINT A$: POKE -16368,0: GOTO 300
2090 REM
2100 REM DATI
2110 DATA 169,64,160,9,32,217,3,96,0,1,96,1,0,17,0,27,64,0,80,0,0,1,0,0,96,1,0,1,239,216
2120 DATA 1,32,47,251,32,88,252,32,228,251,32,228,251,162,28,189,72,8,157,173,4,202,208,247,162,39,189,100,8,157,168,5,202,208,247,162,6,189,139,8,157,184,6,202,208,247,162
2130 DATA 40,189,145,8,157,127,4,202,208,247,142,16,192,142,232,192,174,0,192,224,128,48,249,76,0,198